import axios from 'axios'

export const request = axios.create({
    baseURL: 'https://conduit.productionready.io/'
})

// 创建请求对象,要想使用这个请求对象上下文必须要使用export default默认导出
// 这个上下文对象中包含了当前vue实例app，vuex容器store，query、params、req、res等
export default ({
    store
}) => {  // 这里从上下文context对象中解构出store
    // 请求拦截器
    // Add a request interceptor
    // 任何请求都要经过请求拦截器
    // 我们可以在请求拦截器中做一些公共的业务处理，例如统一设置 Token
    // config 包括本次请求的请求地址、方法、参数等等
    request.interceptors.request.use(function (config) {
        // 请求就会经过这里（正确）
        // 在请求发送前会执行这里面的代码
        // console.log('123')
        const {
            user
        } = store.state
        if (user && user.token) {
            config.headers.Authorization = `Token ${user.token}`
        }
        // 想要拿到用户存入到vuex的store中的用户token，
        // 直接引入store文件的方式肯定是拿不到的，所以需要借助nuxt插件来实现

        // Nuxt.js 允许您在运行Vue.js应用程序之前执行js插件。这在您需要使用自己的库或第三方模块时特别有用。
        // 返回 config 请求配置对象
        return config
    }, function (error) {
        // 如果请求失败（此时请求还没有发出去）就会进入这里
        // Do something with request error
        return Promise.reject(error)
    })
}




// 响应拦截器